package com.tbit.uqbike.service.business;

import com.tbit.uqbike.object.pojo.dto.BatteryMessageDownloadDTO;
import com.tbit.uqbike.object.pojo.dto.BatteryMsgDTO;
import com.tbit.uqbike.object.pojo.vo.BatchOperationMsgVO;
import com.tbit.uqbike.object.pojo.vo.BatteryMsgVO;
import com.tbit.uqbike.object.value.LoginInfo;
import com.tbit.common.entity.view.PageResult;
import com.tbit.common.entity.view.Result;

import java.util.Date;

/**
 * 电池厂商信息接口
 *
 * @Author:BUGTian
 * @DATE: 2022/5/13
 */
public interface BatteryMsgService {
    /**
     * 分页查询电池厂商信息
     *
     * @param accountId
     * @param page
     * @param size
     * @param batteryNO
     * @param batteryModelId
     * @param startTime
     * @param endTime
     * @param state
     * @return
     */
    PageResult<BatteryMsgVO> queryPage(Integer accountId, Integer page, Integer size, String batteryNO, Integer batteryModelId, Date startTime, Date endTime, Integer state, String userCode);


    /**
     * 批量新增电池
     *
     * @param batteryMsgDTO
     * @param loginInfo
     * @return
     */
    Result<BatchOperationMsgVO<String>> batchAdd(BatteryMsgDTO batteryMsgDTO, LoginInfo loginInfo);

    /**
     * 删除电池
     *
     * @param batteryIds
     * @param login
     * @return
     */
    Result delete(LoginInfo login, Integer... batteryIds);

    String batteryMessageDownloadCsv(BatteryMessageDownloadDTO downloadDTO);

    /**
     * 根据电池编号批量删除电池方案
     * @param login 处理人
     * @param batteryNos 电池编号
     * @return
     */
    Result<BatchOperationMsgVO<String>> deleteByBatteryNo(LoginInfo login, String batteryNos,Integer accountId);

    /**
     * 批量操作电池状态
     * @param login login
     * @param accountId 区域id
     * @param batteryNo 电池编号
     * @param type 1:标记丢失 2:删除丢失标记
     * @return result
     */
    Result<BatchOperationMsgVO<String>> lose(LoginInfo login, Integer accountId, Integer type, String batteryNo, String remark);
    /**
     * 电池厂商信息导出excel
     * @param downloadDTO 入参
     * @return excel
     */
    Result<Object> batteryMessageDownload(BatteryMessageDownloadDTO downloadDTO);
}
